package util;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import java.util.concurrent.atomic.AtomicInteger;
 
/**
 * JsonUtil
 *
 * @author HYX
 * @date 2020/5/18 21:40
 */
public class JsonUtil {
    private final static String st1 = "{\"name\":\"tom\",\"age\":18,\"email\":\"35354353@qq.com\",\"address\":[{\"province\":\"湖北省\"},{\"city\":\"武汉市\"},{\"disrtict\":\"武昌区\"}]}";
    private final static String st2 = "{name:\"tom\",age:18,email:\"35354353@qq.com\"}";

    public static void main(String[] args) {
        JSONObject jsonObject = JSONObject.fromObject(st1);
        StringBuffer stb = getAllKey(jsonObject);
        System.err.println(stb);

        boolean flag = false;
        if(flag == false){
            System.out.println("ssssss");
        }
    }

    /**
     * 递归读取所有的key.
     * @param jsonObject 需要获取key的对象
     */
    public static StringBuffer getAllKey(JSONObject jsonObject) {
        if (jsonObject == null || jsonObject.isEmpty()) {
            return null;
        }
        StringBuffer stringBuffer = new StringBuffer();
        //int countKey=jsonObject.size();
        AtomicInteger count= new AtomicInteger();
        jsonObject.forEach((key,value)->{
            //count.addAndGet(1);
            //判断是否为json最后一个key,如果不是则加逗号隔开
//            if(count.get()!=countKey){
////                stringBuffer.append(key).append(", ");
////            }
            //stringBuffer.append(key );
            if((jsonObject.get(key) + "").indexOf("{") == -1){
                System.out.println("JSON对应的值：" + key + "<----->" + jsonObject.get(key));
            }
            if (jsonObject.get(key) instanceof JSONObject) {
                JSONObject innerObject = (JSONObject) jsonObject.get(key);
                getAllKey(innerObject);
                //stringBuffer.append(getAllKey(innerObject) + " : ");
            } else if (jsonObject.get(key) instanceof JSONArray) {
                JSONArray innerObject = (JSONArray) jsonObject.get(key);
                getAllKey(innerObject);
                //stringBuffer.append(getAllKey(innerObject) + " : ");
            }
        });
        return stringBuffer;
    }

    /**
     * 遍历jsonArray,获取 key--->value
     * @param json
     * @return
     */
    public static StringBuffer getAllKey(JSONArray json) {
        StringBuffer stringBuffer = new StringBuffer();
        if (json == null || json.size() == 0) {
            return null;
        }
        json.forEach(key->{
            if (key instanceof JSONObject) {
                JSONObject innerObject = (JSONObject) key;
                getAllKey(innerObject);
                //stringBuffer.append(getAllKey(innerObject));
            } else if (key instanceof JSONArray) {
                JSONArray innerObject = (JSONArray) key;
                getAllKey(innerObject);
                //stringBuffer.append(getAllKey(innerObject));
            }
        });
        return stringBuffer;
    }
 

}